<?php
require_once(MODULESPATH . "core/d.object.class.php");
require_once(MODULESPATH . "finance/dataaccess/d.finance.inc.php");

/**
 * 财经系统数据层投资组合数据类。
 */
class DCombination extends DObject implements IDCombination{
    /*- IDCombination 接口实现 START -*/
    /*- IInjectEnable 接口实现 START -*/
    /**
     * 设置属性值。
     */
    public function __set($prop, $val){
        $this->$prop = $val;
    }
    /*- IInjectEnable 接口实现 END -*/
    
    /**
     * 获取用户默认的投资组合ID。
     * @param Int $uid 用户ID。
     * @return 用户默认的投资组合ID。
     */
    public function getUserDefaultCombinationId($uid){
        $result = -1;
        $sql = "SELECT max(combination_id) FROM  `finance_combinations` WHERE  `owner_id` =  $uid AND  `combination_weight` =  0";
        try{
            $o = $this->dao->getVar($sql);
            if($o){
                $result = $o;
            }
        }catch(Exception $ex){
        }
        return $result;
    }
    
    /**
     * 添加投资组合。
     * @param String $name 名称。
     * @param String $title 标题。
     * @param Int $weight 权重。
     * @param Int $owner 用户ID。
     * @return 新增加的ID。
     */
    public function createCombination($name, $title, $weight, $owner){
        $result = -1;
        $sql = "insert into finance_combinations (combination_name, combination_title, combination_weight, owner_id, update_time, create_time) values ('$name', '$title', $weight, $owner, " . time() . "," . time() . ");";
        try{
            $this->dao->runSql($sql);
            $sql = "select max(combination_id) from finance_combinations WHERE  `owner_id` =  $owner";
            $o = $this->dao->getVar($sql);
            if($o){
                $result = $o;
            }
        }catch(Exception $ex){
        }
        return $result;
    }
    
    /**
     * 向投资组合中添加证券。
     * @param String $symbol 证券代码。
     * @param Int $combinationId 投资组合ID。
     * @param Int $uid 用户ID。
     * @return 是否操作成功。
     */
    public function addStock($symbol, $combinationId, $uid){
        $result = 0;
        $sql = "insert into finance_combination_stocks (stock_symbol, combination_id, owner_id, update_time, create_time) values ('$symbol', $combinationId, $uid, " . time() . "," . time() . ");";
        try{
            $this->dao->runSql($sql);
            $result = 1;
        }catch(Exception $ex){
        }
        return $result;
    }
    
    /**
     * 获取用户的投资组合列表。
     * @return 用户的投资组合列表。
     * @param Int $uid 用户ID。
     */
    public function getUserCombinations($uid){
        $result = array();
        $sql = "SELECT combination_id, combination_name, combination_title FROM  finance_combinations WHERE  `owner_id` =  $uid order by combination_weight asc";
        try{
            $rows = $this->dao->getData($sql);
            if($rows){
                foreach($rows as $row){
                    array_push($result, array(
                        "id" => $row["combination_id"],
                        "name" => $row["combination_name"],
                        "title" => $row["combination_title"]
                        ));
                }
            }
        }catch(Exception $ex){
        }
        return  $result;
    }
    
    /*- IAdjustUserData 接口实现 START -*/
    /**
     * 更换数据的用户ID。
     * @param Int $oldId 用户旧ID。
     * @param Int $newId 用户新ID。
     * @return 是否操作成功。
     */
    public function replaceByUid($oldId, $newId){
        $result = 0;
        $sql = "";
        $sql .= "update finance_combination_stocks set owner_id = $newId WHERE  `owner_id` =  $oldId;";
        $sql .= "update finance_combinations set owner_id = $newId WHERE  `owner_id` =  $oldId;";
        try{
            $this->dao->runSql($sql);
            $result = 1;
        }catch(Exception $ex){
        }
        return  $result;
    }
    
    /**
     * 根据用户ID删除数据。
     * @param Int $uid 用户ID。
     * @return 是否操作成功。
     */
    public function deleteByUid($uid){
        $result = 0;
        $sql = "";
        $sql .= "delete from finance_combination_stocks WHERE `owner_id` =  $uid;";
        $sql .= "delete from finance_combinations WHERE `owner_id` =  $uid;";
        try{
            $this->dao->runSql($sql);
            $result = 1;
        }catch(Exception $ex){
        }
        return  $result;
    }
    /*- IAdjustUserData 接口实现 END -*/
    /*- IDCombination 接口实现 END -*/
}
?>
